//  @ Project : GagalPanen
//  @ File Name : creature.hpp
//  @ Date : 3/9/2011
//  @ Author : Denis
//
//


#if !defined(_CREATURE_H)
#define _CREATURE_H

#include <fstream>
#include "cell.hpp"
#include "gameinterface.hpp"
#include "map.hpp"


class Creature {
public:
  // normal constructor
  Creature(GameInterface* game, Cell* cell);
  
  // load game constructor
  Creature(GameInterface* game, std::ifstream& is);

  virtual void save(std::ofstream& os);

  virtual ~Creature();
  
  virtual void advanceDay() = 0;
  virtual void advanceTime() = 0;
  virtual bool isSteppable() = 0;
  Cell* getCell();
  GridMap* getMap();
protected:
  GameInterface* game_;
  Cell* cell_;
  
};

#endif  //_CREATURE_H
